home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / WIN_PRO / DS-1.ZIP;1 / H.ZIP / MONITOR.H < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-10  |  7.1 KB  |  238 lines

  1. /*
  2.  * This file contains definitions for the various event codes and values
  3.  * that go to make up event streams.
  4.  */
  5.  
  6. #ifdef MemMon
  7. #define EventStream (monfile != NULL)
  8. #ifdef EventMon
  9. /*
  10.  * If EventMon is defined, allocation is merged with the rest of
  11.  *  evaluation history and uses lowercase codes (different from those
  12.  *  used when MemMon is used otherwise).
  13.  */
  14. #define E_Lrgint    'L'        /* Allocate large integer block */
  15. #define E_Real        'd'        /* Allocate real number block */
  16. #define E_Cset        'e'        /* Allocate cset block */
  17. #define E_File        'g'        /* Allocate file block */
  18. #define E_Record    'h'        /* Allocate record block */
  19. #define E_Tvsubs    'i'        /* Allocate substring trapped variable */
  20. #define E_External    'j'        /* Allocate external block */
  21. #define E_List        'k'        /* Allocate list header block */
  22. #define E_Lelem        'm'        /* Allocate list element block */
  23. #define E_Table        'n'        /* Allocate table header block */
  24. #define E_Telem        'o'        /* Show table element block */
  25. #define E_Tvtbl        'p'        /* Allocate table element trapped variable */
  26. #define E_Set        'q'        /* Allocate set header block */
  27. #define E_Selem        't'        /* Allocate set element block */
  28. #define E_Slots        'w'        /* Allocate hash header block */
  29. #define E_Coexpr    'x'        /* Allocate co-expression block */
  30. #define E_Refresh    'y'        /* Allocate refresh block */
  31. #define E_Alien        'z'        /* Show alien block */
  32. #define E_Free        'Z'        /* Show free region */
  33. #define E_String    's'        /* Allocate string */
  34. #else                    /* EventMon */
  35. /*
  36.  *  If EventMon is not defined, MemMon codes are used for allocation
  37.  *   history.
  38.  */
  39. #define E_Lrgint    'i'        /* Allocate large integer block */
  40. #define E_Real        'r'        /* Allocate real number block */
  41. #define E_Cset        'c'        /* Allocate cset block */
  42. #define E_File        'f'        /* Allocate file block */
  43. #define E_Record    'R'        /* Allocate record block */
  44. #define E_Tvsubs    'u'
  45. #define E_External    'E'        /* Allocate external block */
  46. #define E_List        'L'        /* Allocate list header block */
  47. #define E_Lelem        'l'        /* Allocate list element block */
  48. #define E_Table        'T'        /* Allocate table header block */
  49. #define E_Telem        't'        /* Show table element block */
  50. #define E_Tvtbl        'e'
  51. #define E_Set        'S'        /* Allocate set header block */
  52. #define E_Selem        's'        /* Allocate set element block */
  53. #define E_Slots        'h'        /* Allocate hash header block */
  54. #define E_Coexpr    'X'        /* Allocate co-expression block */
  55. #define E_Refresh    'x'        /* Allocate refresh block */
  56. #define E_Alien        'A'        /* Show alien block */
  57. #define E_Free        'F'        /* Show free region */
  58. #define E_String    '"'        /* Allocate string */
  59. #endif                    /* EventMon */
  60.  
  61. /*
  62.  * These monitoring codes are common whether or not EventMon is defined.
  63.  */
  64. #define    E_BlkDeAlc    '-'        /* Deallocate block */
  65. #define    E_StrDeAlc    '~'        /* Deallocate string */
  66. #define    E_Highlight    'H'        /* Show highlight event */
  67. #define    E_Offset    '+'        /* Indicate address offset */
  68. #define    E_Pause        ';'        /* Note mmpause() comment */
  69.  
  70. /*
  71.  * These are not "events"; they are provided for uniformity in tools
  72.  *  that deal with types.
  73.  */
  74. #define E_Integer    '@'        /* Integer pseudo-event */
  75. #define E_Null        '$'        /* Null pseudo-event */
  76. #define E_Proc        '%'        /* Procedure pseudo-event */
  77. #define E_Kywdint    '^'        /* Integer keyword pseudo-event */
  78. #define E_Kywdpos    '&'        /* &pos pseudo-event */
  79. #define E_Kywdsubj    '*'        /* &subject pseudo-event */
  80.  
  81. #else                    /* MemMon */
  82. /*
  83.  * If memory monitoring is not enabled, redefine function calls
  84.  * to do nothing.
  85.  */
  86. #define MMAlc(n,t)
  87. #define MMBGC(r)
  88. #define MMEGC()
  89. #define MMMark(b,t)
  90. #define MMOut(p,m)
  91. #define MMShow(d,c)
  92. #define MMStat(a,l,c)
  93. #define MMStr(n)
  94. #define MMSMark(a,n)
  95. #endif                    /* MemMon */
  96.  
  97. /*
  98.  * Event monitoring
  99.  */
  100.  
  101. #ifdef EventProc
  102. #define TypeCode(d) (word)(Qual(d) ? 0 : Type(d) + 1)
  103. #define MaxEvNest 10            /* maximum event context nesting */
  104. #define MaxEvString 100            /* maximum string in event token */
  105. #endif                    /* EventProc */
  106.  
  107. #ifdef EventMon
  108. /*
  109.  * Event sequence codes.
  110.  */
  111. #define C_Eval          1        /* Main event sequence */
  112. #define C_Symbols      2        /* Symbol table sequence */
  113. #define C_Redraw      3        /* Redraw allocated data */
  114. #define C_Collect      4        /* Garbage collection sequence */
  115. #define C_Mark          5        /* Marking sequence */
  116. #define C_Refresh      6        /* Memory refresh sequence */
  117. #define C_Verify      7        /* Memory verification sequence */
  118.  
  119. /*
  120.  * Codes used for storage regions.
  121.  */
  122. #define    E_Base        '<'        /* Base address of storage region */
  123. #define    E_Size        '>'        /* Region size */
  124. #define    E_Used        '='        /* Space used */
  125.  
  126.  
  127. /*
  128.  * Symbol table events
  129.  */
  130.  
  131. #define E_Pid        '.'        /* Symbol name */
  132. #define E_Sym        'T'        /* Symbol table entry data */
  133.  
  134. /*
  135.  * Garbage collection region
  136.  */
  137. #define    E_Region    '?'        /* Code indicating region */
  138.  
  139. /*
  140.  * Codes for main sequence events
  141.  */
  142.  
  143.    /*
  144.     * Timing events
  145.     */
  146. #define E_Tick        '.'        /* Clock tick */
  147.  
  148.  
  149.    /*
  150.     * Code-position events
  151.     */
  152. #define E_Colm        '|'        /* Column number */
  153. #define E_Line        '_'        /* Line number */
  154.  
  155.    /*
  156.     * Virtual-machine instructions
  157.     */
  158. #define E_Opcode    'O'        /* Virtual-machine instruction */
  159.  
  160.    /*
  161.     * Type-conversion events
  162.     */
  163. #define E_Cvint        'I'        /* Conversion to integer */
  164. #define E_Cvnum        'N'        /* Conversion to numeric */
  165. #define E_Cvstr        'Q'        /* Conversion to string */
  166. #define E_Cvcset    'J'        /* Conversion to cset */
  167. #define E_Cvreal    'K'        /* Conversion to real */
  168.  
  169.    /*
  170.     * Expression events
  171.     */
  172. #define E_Ecall        'c'        /* Call of a built-in operation */
  173. #define E_Efail        'f'        /* Failed from expression */
  174. #define E_Eret        'r'        /* Return from expression */
  175. #define E_Bsusp        'b'        /* Suspension from built-in operation */
  176. #define E_Esusp        'a'        /* Suspension from alternation */
  177. #define E_Lsusp        'l'        /* Suspension from limitation */
  178. #define E_Eresum    'u'        /* Resumption of an expression */
  179. #define E_Evan        'v'        /* Removal of a suspended generator */
  180.  
  181.    /*
  182.     * Co-expression events
  183.     */
  184.  
  185. #define E_Coact        'A'        /* Co-expression activation */
  186. #define E_Coret        'B'        /* Co-expression return */
  187. #define E_Cofail    'D'        /* Co-expression failure */
  188.  
  189.    /*
  190.     * Procedure events
  191.     */
  192.  
  193. #define E_Pcall        'C'        /* Call of procedure */
  194. #define E_Pfail        'F'        /* Procedure failure */
  195. #define E_Pret        'R'        /* Return of a result */
  196. #define E_Psusp        'S'        /* Suspension from procedure */
  197. #define E_Presum    'U'        /* Resumption of a procedure */
  198. #define E_Pvan        'V'        /* Removal of a suspended generator */
  199.  
  200.    /*
  201.     * Garbage collections
  202.     */
  203.  
  204. #define E_Collect    'G'        /* Garbage collection */
  205.  
  206. /*
  207.  * Termination Events
  208.  */
  209. #define E_Error        'E'        /* Run-time error */
  210. #define E_Exit        'X'        /* Exit from program */
  211.  
  212. #else                    /* EventMon */
  213. /*
  214.  * If event monitoring is not enabled, redefine function calls
  215.  * to do nothing.
  216.  */
  217. #define EVFnc(i)
  218. #define EVInt(i)
  219. #define EVList(i,j)
  220. #define EVNest(i)
  221. #define EVUnNest(i)
  222. #define EVProc(v,m)
  223. #endif                    /* EventMon */
  224.  
  225. #ifdef EventProc
  226. /*
  227.  * Codes used in event history files.
  228.  */
  229.  
  230. #define E_Comment    '#'        /* Comment line */
  231.  
  232. /*
  233.  * Event context switches
  234.  */
  235. #define E_Start        '('        /* Start event sequence */
  236. #define E_End        ')'        /* End event sequence */
  237. #endif                    /* EventProc */
  238.